package jframe.dao.impl;

import java.util.ArrayList;
import java.util.List;

import jframe.base.dao.BaseDaoImpl;
import jframe.common.PageModel;
import jframe.dao.DepartmentDAO;
import jframe.entity.bean.Department;
import jframe.utils.StringUtil;

import org.springframework.stereotype.Repository;

/**
 * @描述:<p>部门，组织机构 </p>
 *
 * @作者: 叶平平(yepp)
 *
 * @时间: 2012-2-25 上午12:38:14
 */
@Repository("departmentDAO")
public class DepartmentDAOImpl extends BaseDaoImpl<Department> implements DepartmentDAO {
	/**
	 * 构造方法
	 */
	public DepartmentDAOImpl() {
		
	}

	/**
	 * @描述:<p>通过部门信息查询  </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2012-2-25 上午12:45:31
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param departmentName
	 * @return
	 */
	@Override
	public Department getDepartment(String departmentName) {
		// TODO Auto-generated method stub
		return null;
	}

	/**
	 * @描述:<p>查询部门，组织机构  </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2012-2-25 上午12:44:10
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @return
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List queryDepartmentByParentNo(String parentNo) {
		StringBuffer sql = new StringBuffer();
		List list = new ArrayList();
		sql.append(" select t.deptno as id, t.name as text, t.parentno, ");
		sql.append(" t.leaf  from sys_department t where 1=1 ");
		if(!StringUtil.isNullOrEmpty(parentNo)){
			sql.append(" and t.parentno = ?");
			list.add(parentNo);
		}
		return this.queryForList(sql.toString(), list);
	}
	/**
	 * @描述:<p>查询部门，组织机构列表  </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2012-2-25 下午03:01:56
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public PageModel queryDepartment(String parentNo){
		StringBuffer sql = new StringBuffer();
		List list = new ArrayList();
		sql.append(" select a.id, a.name,a.businessNo,");
		sql.append(" (select b.name from sys_department b where b.deptNo=a.parentNo) AS parentName, ");
		sql.append(" a.orderIds,a.deptNo,a.description ");
		sql.append(" from sys_department a where 1=1");
		if(!StringUtil.isNullOrEmpty(parentNo)){
			sql.append(" and a.parentno = ? ");
			list.add(parentNo);
		}
		return this.queryBySql(sql.toString(), 0, 20, list);
	}
	/**
	 * @描述:<p>保存部门，组织结构  </p>
	 *
	 * @作者:  叶平平(yepp)
	 *
	 * @时间:  2012-2-25 上午12:42:42
	 *
	 * @修改历史: <p>修改时间、修改人、修改原因/说明</p>
	 *
	 * @param department
	 * @return
	 */
	@Override
	public Department saveDepartment(Department department) {
		this.save(department);
		return department;
	}
}
